package Card;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Game {
    public List<Poker> buyCard() {
        List<Poker> pokers=new ArrayList<>();
        for (int i = 0; i < 4; i++) {     //一共有四个花色
            for (int j = 1; j <= 13; j++) {    //每个花色有13个数字牌（A~K）
                Poker poker=new Poker(Poker.getSuits()[i], j);
                pokers.add(poker);
            }
        }
        return pokers;
    }
    private void swap(List<Poker> pokers,int i,int j) {
        Poker tmp=pokers.get(i);
        pokers.set(i,pokers.get(j));     //不能直接赋值，不然会出现重复元素，比如说有一个数赋了一个前面的值，然后往前走一次随机数又是那个值，那么就造成了重复
        pokers.set(j,tmp);
    }
    public void shuffle(List<Poker> pokers) {
        Random random=new Random();
        for (int i = pokers.size()-1; i >0 ; i--) {    //从最后一个下标位置开始随机交换顺序
            int index=random.nextInt(i);   //生成一个[0,i)的随机数
            swap(pokers,i,index);
        }

    }
    public List<List<Poker>> game(List<Poker> pokers) {
        //假设总共有三个人，每个人发五张牌
        List<Poker> hand1=new ArrayList<>();
        List<Poker> hand2=new ArrayList<>();
        List<Poker> hand3=new ArrayList<>();
        //因为要联系在一起，所以需要一个二维数组
        List<List<Poker>> hand=new ArrayList<>();
        hand.add(hand1);
        hand.add(hand2);
        hand.add(hand3);
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 3; j++) {
                //这里的揭牌的大体意思就是从牌堆里面每人依次抽取一张牌，每个人一共抽5次（每抽取一次牌就是从牌堆移除一张牌,而删除一个值，会把原来的值返回）
                Poker poker=pokers.remove(0);
                hand.get(j).add(poker);    //发完一张牌就要给另外一个人发牌
            }
        }
        return hand;
    }
}
